<!--
 * @Description:
 * @Author: dh
 * @Date: 2021-09-15 10:32:03
 * @LastEditors: dh
 * @LastEditTime: 2022-04-12 16:34:43
-->
<!doctype html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>4、拷贝继承</title>
	</head>
	<!--
            特点：
                支持多继承

            缺点：
                实例并不是父类的实例，只是子类的实例
                效率较低，内存占用高（因为要拷贝父类的属性）
                无法获取父类不可枚举的方法（不可枚举方法，不能使用for in 访问到）
 -->

	<body>
		<script>
			function Animal(name) {
				this.name = name || 'Animal';
				this.sleep = function () {
					console.log(this.name + '正在睡觉！');
				};
			}
			// 原型方法
			Animal.prototype.eat = function (food) {
				console.log(this.name + '正在吃：' + food);
			};

			function Cat(name) {
				var animal = new Animal();
				for (var p in animal) {
					Cat.prototype[p] = animal[p];
				}
				Cat.prototype.name = name || 'Tom';
			}

			var cat = new Cat();
			console.log(cat.name);
			console.log(cat.sleep());
			console.log(cat instanceof Animal); // false
			console.log(cat instanceof Cat); // true
		</script>
	</body>
</html>
